class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        unordered_set<int> s(nums.begin(), nums.end());
        int ret = 0;
        for(auto& e : s) // 每个数都判断一次是不是连续序列的开头那个数
        {
            if(s.count(e - 1)) // 前面有小1的数，所以不是连续序列的首元素
                continue;
            
            int num = e, cnt = 1;
            while(s.count(num + 1)) // 计算这个数后面有多少个
            {
                ++num, ++cnt;
            }
            ret = max(ret, cnt);
        }
        return ret;
    }
};